🚀 Proyecto: StarPy Logistics Corporation
Bienvenido, Cadete. Has sido contratado por StarPy Logistics, la empresa líder en transporte interplanetario. Tu misión es desarrollar el software para gestionar nuestra flota de naves y el tráfico en nuestro Puerto Espacial.
Este proyecto evaluará tus conocimientos en Programacion Orientada a Objetos (Clases, Herencia, Polimorfismo, Métodos Mágicos) y estructuras de datos en Python.
📋 Requisitos del Proyecto
1. El Sistema de Naves (naves.py)
Debes implementar una jerarquia de clases para representar nuestras naves.
Clase Base: Nave
Todas las naves comparten estas características:
- Atributos:
nombre: (str) Identificador de la nave.nivel_combustible: (float) De 0 a 100. Inicialmente 100.año_fabricacion: (int).
- Métodos:
__init__: Constructor.__str__: Debe devolver una cadena bonita con la info de la nave.autonomia(): Devuelve la distancia máxima teórica. Por defecto: combustible * 100.despegar(distancia): Comprueba si hay combustible suficiente para recorrerdistancia. Si sí, reduce el combustible y devuelveTrue. Si no, imprime un error y devuelveFalse. Nota: El consumo base es 1 unidad de combustible por 1 unidad de distancia.repostar(cantidad): Incrementa el combustible sin pasar de 100.
Subclase: Carguero
Naves pesadas, lentas, pero con mucha capacidad.
- Hereda de:
Nave. - Atributos extra:
carga_maxima(kg),carga_actual(kg). - Polimorfismo:
- El método
autonomia()aquí es diferente: las naves cargadas consumen más. Fórmula sugerida:(combustible * 100) - (0.5 * carga_actual).
- El método
- Nuevo método:
cargar(peso): Añade carga si no supera el máximo.
Subclase: Crucero
Naves de lujo para turistas.
- Hereda de:
Nave. - Atributos extra:
pasajeros_max(int). - Polimorfismo:
- El método
autonomia()es más eficiente por sus motores modernos. Fórmula:combustible * 200.
- El método
- Métodos Mágicos:
- Implementa
__lt__(menor que) para poder ordenar cruceros por año de fabicación (los más antiguos primero).
- Implementa
2. El Puerto Espacial (puerto.py)
Necesitamos una clase PuertoEspacial para organizar el tráfico.
-
Atributos:
nombre: Nombre de la estación.docks: Un diccionario que clasifica las naves aparcadas.- Clave: Tipo de nave ("Carga", "Pasajeros", "Mantenimiento").
- Valor: Una lista de objetos
Nave. - Ejemplo:
{"Carga": [nave1, nave2], "Pasajeros": [nave3]}
-
Métodos:
recibir_nave(nave, tipo): Añade la nave a la lista correspondiente en el diccionariodocks.mostrar_tablero(): Recorre el diccionario e imprime qué naves hay en cada sección del puerto.inspeccion_flota(año_limite): Devuelve una lista con todas las naves (de cualquier tipo) que sean anteriores alaño_limite.
3. Programa Principal (main.py)
Crea un script que simule un día de trabajo:
- Instancia un
PuertoEspacial. - Crea varias naves (
Cargueros yCruceros) con distintos datos. - Ingresa las naves en el puerto usando
recibir_nave. - Muestra el estado del puerto (
mostrar_tablero). - Simula un despegue: Intenta hacer despegar un carguero muy pesado para ver si falla por falta de autonomía.
- Busca naves antiguas para "jubilarlas" usando
inspeccion_flota.
🌟 Puntos Extra (Opcional)
- Validaciones: Que no se pueda tener combustible negativo.
- Ordenación: Usa
sort()para ordenar la lista de Cruceros por antigüedad aprovechando el__lt__.
¡Buena suerte, Comandante! 👩🚀